package com.tjetc.reflect;

import java.lang.reflect.Field;

public class _10FieldMethod {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException {
        /*
        1.getModifiers:以int形式返回修饰符
        （说明：默认修饰符是0,public是1,private是2,protected是4,
        static是8,final是16）,public(1)+static (8)=9
        2.getType:以Class形式返回类型
        3.getName:返回属性名
         */
        Class cls = Class.forName("com.tjetc.reflect._1Cat");
        Object o = cls.newInstance();
        Field[] fields = cls.getDeclaredFields();
        for (Field field : fields) {
            System.out.println("字段名：" + field.getName()
                    + "，字段类型：" + field.getType()
                    + "，字段的修饰符：" + field.getModifiers());
        }
        // 这个方法只能获取public的属性
        Field name = cls.getField("name");

        // 获取属性的值
        System.out.println(name.get(o));
        // 设置属性的值 如果属性是静态的可以不设置对象
        // 因为该属于类
        name.set(null, "lisi");
        System.out.println(name.get(o));
    }
}
